﻿using System;
using System.Collections.Generic;

namespace LogikBug.Collections
{
	public interface IHashtable<TKey, TValue> : IEnumerable<TValue>
	{
		TValue this[TKey key] { get; set; }
		IReadOnly<TKey> Keys { get; }
		IReadOnly<TValue> Values { get; }

		void Add(Tuple<TKey, TValue> entry);
		void Add(TKey key, TValue value);
		void Clear();
		bool Has(TKey key);
		bool Has(TValue value);
		void Remove(TKey key);
		TValue GetValueOrDefault(TKey key);
	}
}
